DAOS-18610 tests: Fix container/boundary timeouts#18608
Conversation
|
Ticket title is 'container/boundary.py:BoundaryTest.test_container_boundary - test timeout creating containers' |
bc35460 to
87ae38d
Compare
The test employs 30000 threads via concurrent.futures.ThreadPoolExecutor. Each thread creates a container and sleeps 2 s. In el8’s Python 3.6, this ThreadPoolExecutor allows (os.cpu_count() or 1) * 5 threads to run at the same time, whereas in el9’s Python 3.9, it only allows min(32, (os.cpu_count() or 1) + 4). Log messages produced by my debug PR confirm the latter to be 32, which must be way smaller than the former. If we consider only the time taken by the sleep in every thread, then it takes at least 2 * (30000 / 32) = 1875 s to finish 30000 such threads, already longer than the test timeout of 1200 s. This patch specifies max_workers explicitly to limit the delay caused by sleeping. Test-tag: pr test_container_boundary Signed-off-by: Li Wei <liwei@hpe.com>
87ae38d to
1a14a63
Compare
|
Test stage Functional Hardware Medium MD on SSD completed with status UNSTABLE. https://jenkins-3.daos.hpc.amslabs.hpecorp.net/job/daos-stack/job/daos//view/change-requests/job/PR-18608/3/testReport/ |
|
Build 3
|
|
Reviewers, forgive me for marking this as ready before the test result is back. It takes several days before the FHL test even to start! |
|
See also this Jira comment. And, this comment. |
|
Test stage Functional Hardware Large MD on SSD completed with status FAILURE. https://jenkins-3.daos.hpc.amslabs.hpecorp.net//job/daos-stack/job/daos/view/change-requests/job/PR-18608/3/execution/node/1358/log |
|
Just FYI that the unit tests were auto-skipped by CI since this PR only modified ftest. |
Thanks for the info. |
The test employs 30000 threads via
concurrent.futures.ThreadPoolExecutor. Each thread creates a container and sleeps 2 s. In el8’s Python 3.6, this ThreadPoolExecutor allows (os.cpu_count() or 1) * 5 threads to run at the same time, whereas in el9’s Python 3.9, it only allows min(32, (os.cpu_count() or 1) + 4). Log messages produced by my debug PR confirm the latter to be 32, which must be way smaller than the former. If we consider only the time taken by the sleep in every thread, then it takes at least 2 * (30000 / 32) = 1875 s to finish 30000 such threads, already longer than the test timeout of 1200 s.
This patch specifies max_workers explicitly to limit the delay caused by sleeping.
Test-tag: pr test_container_boundary
Steps for the author:
After all prior steps are complete: